// Copyright (C) 2022 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
//
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<广西木子科技有限公司>，授权编号：<NT220402151538>，代码指纹：<A.648883738.885>，技术对接人微信：<ID: Lingmuziyi>】
// 【授权寄送：<收件：李先生、地址：南宁市科园西十路11号国电智能大厦1101F、电话：17736659550、邮箱：yingshashou@vip.qq.com>】
//
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
//
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.eva.framework.dto;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.eva.epc.common.util.ESerializable;

/**
 * <p>
 * 服务端返回数据的封装 对象(理论上服务端每次处理完后都会返回本对象，
 * 客户端可据此知道本次操作是否已经成功执行）.<br>
 * <p>
 * 处理成功则DataFromServer对象中的sucess字值会被设置成true且returnValue会设置成处理完成的返回的对象
 * ，否则sucess将被设置成false且returnValue里存放的将是错误消息文本（该文本不能保证一定不是null）
 * </p>
 * </p>
 *
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @version 1.0
 * @see com.eva.framework.HttpController.ends.core.HttpPotal#process(HttpServletRequest, HttpServletResponse)
 */
public class DataFromServer implements ESerializable {
    private static final long serialVersionUID = -2054860604702171939L;

    /**
     * 处理成功与否的状态标识：true表示处理成功，反之表示失败
     */
    private boolean success = true;
    /**
     * 处理完成后的返回值（视具体业务而定
     * ，一般来讲，服务器端处理请求时如遇失败，则本对象默认是一个Exception对象）
     */
    private String returnValue = null;

    /**
     * <p>
     * 处理是否成功执行（这个成功是指业务逻辑上是否正确被处理）. <br>
     * 如果返回的success=false，则此时的returnValue存放的是错误消息文本.
     * </p>
     */
    public boolean isSuccess() {
        return success;
    }

    /**
     * 设置处理是否成功执行（外部一般不需要手动设置本值，由eva.epc的控制器设置）
     */
    public DataFromServer setSuccess(boolean Success) {
        this.success = Success;
        return this;
    }

    /**
     * <p>
     * 获得服务端处理返回对象（可能是null，视具体业务而定）.<br>
     * 如果isSuccess()==true则returnValuer值是处理完后的返回值，束则存放的是错误消息文本.
     * </p>
     *
     * @return 服务端处理返回对象（这一般在服务端由eva.epc的控制器自已完成，无需外部干涉，它可能是null，视具体业务而定
     * ，一般来讲，服务器端处理请求时如遇失败，则本对象默认是一个Exception对象）
     */
    public String getReturnValue() {
        return returnValue;
    }

    /**
     * 设置服务端处理返回对象（这一般在服务端由eva.epc的控制器自已完成，无需外部干涉，它可能是null，视具体业务而定
     * ，一般来讲，服务器端处理请求时如遇失败，则本对象默认是一个Exception对象）
     */
    public void setReturnValue(String returnValue) {
        this.returnValue = returnValue;
    }

    /**
     * 创建一个默认的 success==false 的DataFromServer新对象。
     *
     * @return
     * @since 20170708
     */
    public static DataFromServer createDefaultFailed() {
        return new DataFromServer().setSuccess(false);
    }
}
